home *** CD-ROM | disk | FTP | other *** search
- (*########################################################################
- S T O R B A S E
- ########################################################################
-
- Idee : Johannes Leckebusch, Peter Sollich
- Realisation : Peter Sollich
- Dynamic Heap : Peter Hellinger
-
- ########################################################################
-
- 28.05.89 Hp deallocate ist jetzt in der Lage nur ein Teil-Deallocate
- des Speicher-Blocks durchzuführen.
-
- 26.05.89 Hp Problem des "doppelten Lottchens" in deallocate gelöst.
- Stürzt nun nicht mehr bei bereits deallozierten Pointern ab.
-
- 28.12.88 Hp deallocate stürzt nicht mehr bei NIL-Pointern ab.
- + Allozierungs reihenfolge verändert. Dadurch das "Heaprest"-
- Problem gelöst. Siehe auch Kommentar in allocate.
- + Berechnung der freien bzw. belegten Bytes im Heap auf Bytes
- umgestellt. free liefert jetzt auch die Anzahl freier BYTES.
- + memAvail liefert nun die Anzahl aller freien BYTES sowohl
- im Heap, als auch im noch nicht allozierten Speicher -
- abzüglich der GEMDOS-Reserve von 64kb (Konstante GEMReserve)
- + In AppendHeap wird nun bei JEDER Fehlerbedingung das Dynamic-
- Flag FALSE geschaltet. (!!)
-
- 04.12.88 Hp Initalisierung des Heaps beschleunigt.
- Markierung von Lisp-Blöcken durchgängig gemacht; läuft nun
- auch über AppendHeap.
-
- 03.12.88 Hp Zu früh gefreut: Storage läuft nicht. Warum? Nach endlosem
- Debugging habe ich zwei Fehler gefunden:
- 1. Die Größe des Blocks der per AppendHeap angefordert
- wurde, wird nicht richtig gesetzt. Dadurch ist die
- Blockberechnung von DEALLOCATE katastrophal falsch.
- Warum es zunächst funktionierte ist mir schleierhaft.
- 2. GEMDOS.Alloc liefert nicht NIL wenn kein Speicher mehr
- da, ist sondern NULL. AppendHeap konnte deshalb das
- Ende des Speichers nicht erkennen.
-
- 28.11.88 Hp Initialisierung für GESAMTEN Speicher eingeführt. Kann
- sonst zu Problemen führen wenn wir Blocks bekommen die
- nicht durch unsere freeMap abgedeckt werden.
-
- 25.11.88 Hp Bug in allocate beseitig. allocate testet nun BEVOR es nach
- einem Block sucht, ob der Heap überhaupt groß genug ist.
- Der G2E läuft jetzt einwandfrei. Damit müßten eigentlich
- alle schwerwiegenden Fehler behoben sein.
-
- 23.11.88 Hp Jubel! Heaptest lief einwandfrei! 3640 x 1000 Byte und an-
- schließend 1820 x 2000 Byte. Nun kommen die Härtetests.
-
- 22.11.88 Hp Heute fiel der Groschen: Es ist wieder einmal eines jener
- Dinge, die einem fast in die Nase zwicken, bevor man sie
- sieht. Also: Wir tarnen das Stückchen Speicher, daß wir
- in den Heap integrieren wollen als von ALLOCATE behandlet
- (korrekt gesetzte Größen, GranulesUsed richtig berechnet etc.
- largeSentinel erhält die neue Heapgröße) und lassen es von
- DEALLOCATE in den Heap integrieren... Physikalisch zusammen-
- hängende Speicherbereiche werden anhand der BitMap ermittelt
- und als größerer Block in den Heap integriert.
-
- 20.11.88 Hp Versuchsweise Implementierung von AppendHeap -> Bombenstimmung
-
- 19.11.88 Hp freeMap wird bei Modul-Initialisierung für den ganzen verfüg-
- baren Speicher angelegt -> dadurch Weg frei für eine dynamische
- Heap-Erweiterung.
-
- 18.11.88 Hp Massenweise Kommentare ergänzt.
- Bezeichner etwas entkryptisiert...
- Standard-Initalisierung bei Aufruf von ALLOCATE (@#!)
-
- 08.08.87 Johannes Leckebusch / Peter Sollich
- Erstimplementation
-
- ########################################################################*)
- ə